#ifndef ESMO_H
#define ESMO_H

#include "t_type.h"

typedef struct
{
    uint16_t adcValuePhaseToGnd[3];     /* 三相对地电压 */
    int32_t uAlpha;                     /* alpha轴电压 */
    int32_t uBeta;                      /* beta轴电压 */
    int32_t eAlpha;                     /* alpha轴反电动势 back EMF */
    int32_t eBeta;                      /* beta 轴反电动势 back EMF */
    // int32_t zAlpha;                     /* alpha轴滑模观测到的电压 */
    // int32_t zBeta;                      /* beta 轴滑模观测到的电压 */

    int32_t iAlpha;                     /* alpha轴电流 */
    int32_t iBeta;                      /* beta 轴电流 */
    int32_t iAlphaEst;                  /* alpha轴预测电流 */
    int32_t iBetaEst;                   /* beta 轴预测电流 */
    int32_t iAlphaErr;                  /* Alpha轴电流误差 */
    int32_t iBetaErr;                   /* beta轴电流误差 */

    int32_t we;
    int32_t theta;
    int32_t thetaRad;
}SMO_T;

void RunSmoThetaSolve(SMO_T *smo);
void ReadSmoSpeed(SMO_T *smo);
void ReadSmoTheta(SMO_T *smo);
#endif
